<script>
    var a = 100
    var b =200
    var arr = [2,2,2] 
    var newArr = arr.map(function(item,index){
        var a = 300
        if(item === index + 1){return item}   // 2  流程：当值等于2的时候全等于下标+1  返回item就等于2
        if(item === index){return b}  //200   流程：当值等于2的时候全等于下标  返回b b等于200
        return a
    })
    window.setTimeout(function(){
        console.log(++b); //2  201   
    },0)
    console.log((newArr)); //1  [300,2,200]   流程：


    // 执行流程：1.因为setTimeout是异步函数，要等同步函数执行完成才能执行，所以先执行同步函数
    //           2.同步函数map是一个循环返回一个新数组，在局部作用域里，先输出a，a定义等于300，
    //           3.再执行if里面的  当值等于2的时候全等于下标+1  返回item就等于2
    //           4.再执行当值等于2的时候全等于下标  返回b b等于200
    //           5.最后再执行异步函数setTimeout
</script>